Getting Started with Individual Differences Research

A Practical Introduction for Experimental Researchers

Jason Tsukahara, Ph.D.

University of Miami

December 9, 2025

Workshop Overview

 

 

  1. Why individual differences matter
  2. Taking a latent variable approach
  3. Hands-on practice in R

The Experimental Approach

 

 

  • Manipulate variables → measure change
  • Control sources of variability
  • Focus on mean differences between conditions
  • Eliminate variability between individuals

The individual differences approach

 

 

  • Measure variables → examine covariation across people

  • Embrace variability between individuals as meaningful

  • Focus on relationships between constructs

  • Eliminate variability within individual

Two ways of thinking about variability

 

 

Experimental

  • Variability within individuals = Signal

  • Variability between individuals = Noise

  • Focus: Mean differences

  • Question: Does x cause y?

Individual Differences

  • Variability within individuals = Noise

  • Variability between individuals = Signal

  • Focus: Correlations / Covariance

  • Question: Who differs and why?

 

Mean differences tell us whether an effect exists, individual differences tells us for who and why

Variability between individuals is not just noise

Visual working memory as an example

 

Fukuda et al. (2015)
  • Visual working memory capacity is measured with change-detection “visual arrays” tasks

  • Behavioral and neural evidence from this task suggests that the capacity-limit of visual working memory is about 3-4 items

Variability between individuals is not just noise

Visual working memory as an example

 

Fukuda et al. (2015)
  • Visual working memory capacity is measured with change-detection “visual arrays” tasks

  • Behavioral and neural evidence from this task suggests that the capacity-limit of visual working memory is about 3-4 items

  • However, there is considerable individual variability on capacity limit estimates (k)

Variability between individuals is not just noise

Visual working memory as an example

 

Fukuda et al. (2015)
  • High and low capacity individuals show systematic differences on behavioral and neural indices of capacity when the set-size exceeds their capacity limitations

  • This has been interpreted as differences in the ability to selectively filter out irrelevant information

  • Therefore, capacity limitations may reflect attention processes and not just storage limitations

A latent variable approach to individual differences

Cognitive Psychometric Approach

 

 

  1. Individual differences research relies on the use of multiple measures to get at the constructs of interest.

  2. Task impurity: individual task performance will be due to construct of interest, task-specific variance, construct unrelated variance, and error variance.

A latent variable approach to individual differences

Cognitive Psychometric Approach

 

 

  1. Individual differences research relies on the use of multiple measures to get at the constructs of interest.

  2. Task impurity: individual task performance will be due to construct of interest, task-specific variance, construct unrelated variance, and error variance.

  3. Latent constructs: common variance across a set of measures

What are latent variables?

 

 

 

Latent variables are hypothetical constructs that we think our tests measure

Examples of latent variables

Cognitive ability

 

 

Examples of latent variables

Psychological Distress

 

 

Observed vs. Latent Variables

 

 

Observed Variables

  • In your dataset, the scores on the tests you gave participants

  • Observed variables are indirect measures of theoretical constructs

  • Observed variables are also called “indicators” or “manifest variables”

Latent Variablse

  • Unobserved, hypothetical constructs in their “purest form”

  • Latent variables are not measured directly, but via observed variables

  • Latent variables are also known as “latent factors”

Latent Variable Example

Fluid Intelligence

 

Latent Variable Example

Fluid Intelligence

 

Latent Variable Example

Fluid Intelligence

 

Latent Variable Example

Fluid Intelligence

 

Latent Variable Example

Fluid Intelligence

 

Pros and cons of latent variable approach

 

Benefits

  • Draw conclusions about constructs and not tasks

  • Test models / theories and assess fit of model to data

  • Flexible and can handle complex models and data

    • Can handle missing data

    • Can constrain parameters

    • Robust estimation methods for non-normal data

    • Mediation, latent growth curve, multi-level, and longitudinal modeling

Pros and cons of latent variable approach

 

Cons

  • Need a large sample size (200+)

  • Need multiple indicators for each construct (3+)

  • Researcher ‘degrees of freedom’ can be overwhelming

  • Assessing model fit and mispecification can be complicated

Key considerations for designing an individual differences study

 

  1. Use multiple tasks to measure a single ability

    • At least 3 are recommended but can get away with just 2 in some cases
  2. Avoid difference scores

    • e.g., Difference in response times between congruent and incongruent trials in a Stroop task
  3. Consider and assess for reliability

    • More trials is typically better but need to balance with administration time
  4. Continuous vs. extreme-group designs

    • Don’t split your sample into “high” and “low” groups
  5. Restriction of range

    • Recruit from as diverse and representative sample pool as possible
  6. Sample size

    • N > 200 is ideal

Practical Hands-On Experience

Variability between individuals is not just noise

Visual working memory as an example

 

Fukuda et al. (2015)
  • High and low capacity individuals show systematic differences on behavioral and neural indices of capacity when the set-size exceeds their capacity limitations

  • This has been interpreted as differences in the ability to selectively filter out irrelevant information

  • Therefore, capacity limitations may reflect attention processes and not just storage limitations

Example data set

Martin et al. (2021)

Data Set 3 (N = 568)

 

Performance on change-detection visual arrays tasks are interpreted as reflecting the limited-capacity storage and maintenance of visual information in working memory. However, there is evidence to suggest that visual arrays task performance reflects individual differences in attention control processes. The purpose of this study was to evaluate the extent to which selective and non-selective visual arrays tasks reflect working memory storage and maintenance vs. attention control processes.

 

Non-Selective Visual Arrays: VAorient

Selective Visual Arrays: VAorient-S

Working memory capacity: Operation span, Symmetry Span, Rotation Span, Running Spatial Span, Running Digit Span

Attention control: Antisaccade, Flanker, Stroop

Example data set

Martin et al. (2021)

Data Set 3 (N = 568)

 

Analysis steps

 

  1. Data quality check

    • Assess amount of missing data (<5%), outliers, distributions (skewness and kurtosis)
  2. Correlation matrix

    • Assess and familiarize yourself with the correlation among variables
  3. Exporatory factor analysis

    • Data-driven approach to identifying latent factors
  4. Confirmatory factor analysis

    • Theory-driven approach to test how well our model/factor structure fits the data

    • Assess the correlations between latent factors

  5. Structural equation modeling

    • Regression-based approach to model relations between latent factors

Analysis steps

 

  1. Data quality check

    • Assess amount of missing data (<5%), outliers, distributions (skewness and kurtosis)
  2. Correlation matrix

    • Assess and familiarize yourself with the correlation among variables
  3. Exporatory factor analysis

    • Data-driven approach to identifying latent factors
  4. Confirmatory factor analysis

    • Theory-driven approach to test how well our model/factor structure fits the data

    • Assess the correlations between latent factors

  5. Structural equation modeling

    • Regression-based approach to model relations between latent factors

Quarto template for analysis

 

Data quality check

 

library(semoutput)

sem_descriptives(data)
Descriptive Statistics
Variable n Mean SD Range Skewness Kurtosis % Missing
OSpan 564   54.440 15.338    3.000 — 75.000  −0.878  0.145 0.704
SymSpan 565   26.644  9.056    3.000 — 42.000  −0.417 −0.502 0.528
RotSpan 565   24.664  9.805    0.000 — 42.000  −0.448 −0.577 0.528
RunSpatial 567   24.577 11.288    1.000 — 49.000  −0.310 −0.798 0.176
RunDigit 561   56.624 19.360    0.000 — 107.000 −0.458  0.225 1.232
Antisaccade 566    0.556  0.163    0.200 — 0.983    0.116 −0.793 0.352
Flanker 561   98.460 44.322  −49.966 — 251.245  0.629  1.081 1.232
Stroop 567  131.552 98.160 −152.632 — 476.290  0.670  0.933 0.176
VAorient_k 568    2.747  1.492   −2.467 — 5.767   −0.490 −0.126 0.000
VAorient_S_k 568    1.586  1.298   −1.675 — 5.000    0.101 −0.471 0.000
Total N = 568

Standard guidelines:

  • < 5% of missing data on any single variable
  • Outliers: +/- 3 or 3.5 SD
  • Skewness: within +/- 3
  • Kurtosis: within +/- 10

Correlations

 

library(sjPlot)

tab_corr(data, na.deletion = "pairwise", show.p = FALSE)

 

  OSpan SymSpan RotSpan RunSpatial RunDigit Antisaccade Flanker Stroop VAorient_k VAorient_S_k
OSpan   0.542 0.528 0.529 0.521 0.378 -0.114 -0.303 0.363 0.432
SymSpan 0.542   0.683 0.615 0.435 0.446 -0.148 -0.185 0.462 0.512
RotSpan 0.528 0.683   0.603 0.489 0.440 -0.165 -0.180 0.432 0.504
RunSpatial 0.529 0.615 0.603   0.558 0.480 -0.223 -0.240 0.553 0.584
RunDigit 0.521 0.435 0.489 0.558   0.405 -0.144 -0.233 0.352 0.471
Antisaccade 0.378 0.446 0.440 0.480 0.405   -0.194 -0.221 0.383 0.497
Flanker -0.114 -0.148 -0.165 -0.223 -0.144 -0.194   0.093 -0.183 -0.160
Stroop -0.303 -0.185 -0.180 -0.240 -0.233 -0.221 0.093   -0.170 -0.206
VAorient_k 0.363 0.462 0.432 0.553 0.352 0.383 -0.183 -0.170   0.577
VAorient_S_k 0.432 0.512 0.504 0.584 0.471 0.497 -0.160 -0.206 0.577  
Computed correlation used pearson-method with pairwise-deletion.

What to look for:

  • Convergent validity: Stronger correlations between tasks within a construct

  • Discriminate validity: Weaker correlations between tasks across constructs

  • Multicolinearity: Too high of correlations, r > .85

  • Weak correlations

Latent variable analyses, model the variance covariance matrix

 

OSpan SymSpan RotSpan RunSpatial RunDigit Antisaccade Flanker Stroop VAorient_k VAorient_S_k
OSpan 235.263 75.042 78.716 91.570 154.288 0.940 −77.752 −453.431 8.278 8.608
SymSpan 75.042 82.010 60.840 62.972 76.208 0.658 −59.711 −164.515 6.248 6.034
RotSpan 78.716 60.840 96.142 66.639 92.675 0.703 −71.974 −173.089 6.308 6.398
RunSpatial 91.570 62.972 66.639 127.428 121.168 0.883 −111.187 −265.489 9.318 8.560
RunDigit 154.288 76.208 92.675 121.168 374.828 1.268 −123.684 −442.762 10.205 11.786
Antisaccade 0.940 0.658 0.703 0.883 1.268 0.027 −1.399 −3.544 0.093 0.105
Flanker −77.752 −59.711 −71.974 −111.187 −123.684 −1.399 1,964.462 406.326 −11.987 −9.202
Stroop −453.431 −164.515 −173.089 −265.489 −442.762 −3.544 406.326 9,635.449 −24.909 −26.159
VAorient_k 8.278 6.248 6.308 9.318 10.205 0.093 −11.987 −24.909 2.225 1.116
VAorient_S_k 8.608 6.034 6.398 8.560 11.786 0.105 −9.202 −26.159 1.116 1.684

 

observed = model + residual

  • Model fit is assessed by how closely our model reproduces (or explains) the observed variance covariance matrix

  • You need to balance parsimony (a simpler model with fewer parameter estimates) and adequate model fit (a more complex model with theoretically irrelevant parameters)

Confirmatory factor analysis: Specify model syntax

lavaan::cfa()

 

 

OSpan SymSpan RotSpan RunSpatial RunDigit Antisaccade Flanker Stroop VAorient_k VAorient_S_k
OSpan 235.263 75.042 78.716 91.570 154.288 0.940 −77.752 −453.431 8.278 8.608
SymSpan 75.042 82.010 60.840 62.972 76.208 0.658 −59.711 −164.515 6.248 6.034
RotSpan 78.716 60.840 96.142 66.639 92.675 0.703 −71.974 −173.089 6.308 6.398
RunSpatial 91.570 62.972 66.639 127.428 121.168 0.883 −111.187 −265.489 9.318 8.560
RunDigit 154.288 76.208 92.675 121.168 374.828 1.268 −123.684 −442.762 10.205 11.786
Antisaccade 0.940 0.658 0.703 0.883 1.268 0.027 −1.399 −3.544 0.093 0.105
Flanker −77.752 −59.711 −71.974 −111.187 −123.684 −1.399 1,964.462 406.326 −11.987 −9.202
Stroop −453.431 −164.515 −173.089 −265.489 −442.762 −3.544 406.326 9,635.449 −24.909 −26.159
VAorient_k 8.278 6.248 6.308 9.318 10.205 0.093 −11.987 −24.909 2.225 1.116
VAorient_S_k 8.608 6.034 6.398 8.560 11.786 0.105 −9.202 −26.159 1.116 1.684

 

observed = model + residual

  • Model fit is assessed by how closely our model reproduces (or explains) the observed variance covariance matrix

  • You need to balance parsimony (a simpler model with fewer parameter estimates) and adequate model fit (a more complex model with theoretically irrelevant parameters)

Confirmatory factor analysis: Specify model syntax

lavaan::cfa()

 

 

model <- '
# latent factors
WMC =~ OSpan + SymSpan + RotSpan + RunSpatial + RunDigit
AC =~ Antisaccade + Flanker + Stroop

# single-indicator factors
VA_ns =~ 1*VAorient_k
VA_s =~ 1*VAorient_S_k
'

 

  1. The model syntax contains formula types enclosed in single brackets

    • Formula type to define latent factor: f1 =~ ind1 + ind2 + ind3

Confirmatory factor analysis: Fit the model

lavaan::cfa()

 

model <- '
# latent factors
WMC =~ OSpan + SymSpan + RotSpan + RunSpatial + RunDigit
AC =~ Antisaccade + Flanker + Stroop

# single-indicator factors
VA_ns =~ 1*VAorient_k
VA_s =~ 1*VAorient_S_k
'

fit <- cfa(model, data, missing = "fiml", std.ov = TRUE)

 

  1. Fit the model with cfa()

    • Specify the model syntax object, the data, and additional arguments

    • missing = "fiml" — uses full information maximum likelihood. This is the best method for dealing with missing data

    • std.ov = TRUE — standardizes the observed (indicator) variables before running the model (i.e., uses a correlation matrix instead of covariance matrix)

Confirmatory factor analysis: Assess model output

lavaan::cfa()

 

summary(fit, fit.measures = TRUE, standardized = TRUE)
lavaan 0.6-19 ended normally after 34 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        34

  Number of observations                           568
  Number of missing patterns                        10

Model Test User Model:
                                                      
  Test statistic                               107.514
  Degrees of freedom                                31
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                              2163.395
  Degrees of freedom                                45
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.964
  Tucker-Lewis Index (TLI)                       0.948
                                                      
  Robust Comparative Fit Index (CFI)             0.964
  Robust Tucker-Lewis Index (TLI)                0.947

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)              -6986.895
  Loglikelihood unrestricted model (H1)      -6933.138
                                                      
  Akaike (AIC)                               14041.791
  Bayesian (BIC)                             14189.423
  Sample-size adjusted Bayesian (SABIC)      14081.489

Root Mean Square Error of Approximation:

  RMSEA                                          0.066
  90 Percent confidence interval - lower         0.053
  90 Percent confidence interval - upper         0.080
  P-value H_0: RMSEA <= 0.050                    0.026
  P-value H_0: RMSEA >= 0.080                    0.047
                                                      
  Robust RMSEA                                   0.066
  90 Percent confidence interval - lower         0.053
  90 Percent confidence interval - upper         0.080
  P-value H_0: Robust RMSEA <= 0.050             0.023
  P-value H_0: Robust RMSEA >= 0.080             0.055

Standardized Root Mean Square Residual:

  SRMR                                           0.030

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  WMC =~                                                                
    OSpan             1.000                               0.682    0.682
    SymSpan           1.142    0.070   16.321    0.000    0.779    0.780
    RotSpan           1.141    0.070   16.270    0.000    0.778    0.779
    RunSpatial        1.185    0.071   16.675    0.000    0.809    0.810
    RunDigit          0.963    0.068   14.104    0.000    0.657    0.656
  AC =~                                                                 
    Antisaccade       1.000                               0.698    0.699
    Flanker          -0.377    0.071   -5.336    0.000   -0.263   -0.264
    Stroop           -0.465    0.073   -6.417    0.000   -0.325   -0.325
  VA_ns =~                                                              
    VAorient_k        1.000                               0.999    1.000
  VA_s =~                                                               
    VAorient_S_k      1.000                               0.999    1.000

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  WMC ~~                                                                
    AC                0.399    0.039   10.167    0.000    0.838    0.838
    VA_ns             0.406    0.040   10.270    0.000    0.596    0.596
    VA_s              0.462    0.042   11.032    0.000    0.677    0.677
  AC ~~                                                                 
    VA_ns             0.388    0.044    8.818    0.000    0.556    0.556
    VA_s              0.486    0.047   10.441    0.000    0.696    0.696
  VA_ns ~~                                                              
    VA_s              0.575    0.048   11.903    0.000    0.577    0.577

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .OSpan            -0.006    0.042   -0.134    0.894   -0.006   -0.006
   .SymSpan          -0.001    0.042   -0.036    0.972   -0.001   -0.001
   .RotSpan           0.001    0.042    0.017    0.986    0.001    0.001
   .RunSpatial       -0.000    0.042   -0.009    0.993   -0.000   -0.000
   .RunDigit          0.006    0.042    0.142    0.887    0.006    0.006
   .Antisaccade      -0.001    0.042   -0.025    0.980   -0.001   -0.001
   .Flanker           0.002    0.042    0.053    0.958    0.002    0.002
   .Stroop            0.001    0.042    0.013    0.990    0.001    0.001
   .VAorient_k       -0.000    0.042   -0.000    1.000   -0.000   -0.000
   .VAorient_S_k     -0.000    0.042   -0.000    1.000   -0.000   -0.000

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .OSpan             0.536    0.036   14.906    0.000    0.536    0.535
   .SymSpan           0.390    0.029   13.261    0.000    0.390    0.391
   .RotSpan           0.393    0.030   13.295    0.000    0.393    0.394
   .RunSpatial        0.343    0.027   12.559    0.000    0.343    0.344
   .RunDigit          0.570    0.038   15.056    0.000    0.570    0.569
   .Antisaccade       0.511    0.067    7.674    0.000    0.511    0.512
   .Flanker           0.929    0.057   16.313    0.000    0.929    0.931
   .Stroop            0.893    0.055   16.178    0.000    0.893    0.894
   .VAorient_k        0.000                               0.000    0.000
   .VAorient_S_k      0.000                               0.000    0.000
    WMC               0.465    0.053    8.764    0.000    1.000    1.000
    AC                0.488    0.078    6.248    0.000    1.000    1.000
    VA_ns             0.998    0.059   16.852    0.000    1.000    1.000
    VA_s              0.998    0.059   16.852    0.000    1.000    1.000

 

  1. Print model output with summary()
    • fit.measures = TRUE — Outputs measures to assess the fit of the model
    • standardized = TRUE — Outputs standardized model parameters

Confirmatory factor analysis: Assess model output

lavaan::cfa()

 

summary(fit, fit.measures = TRUE, standardized = TRUE)
lavaan 0.6-19 ended normally after 34 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        34

  Number of observations                           568
  Number of missing patterns                        10

Model Test User Model:
                                                      
  Test statistic                               107.514
  Degrees of freedom                                31
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                              2163.395
  Degrees of freedom                                45
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.964
  Tucker-Lewis Index (TLI)                       0.948
                                                      
  Robust Comparative Fit Index (CFI)             0.964
  Robust Tucker-Lewis Index (TLI)                0.947

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)              -6986.895
  Loglikelihood unrestricted model (H1)      -6933.138
                                                      
  Akaike (AIC)                               14041.791
  Bayesian (BIC)                             14189.423
  Sample-size adjusted Bayesian (SABIC)      14081.489

Root Mean Square Error of Approximation:

  RMSEA                                          0.066
  90 Percent confidence interval - lower         0.053
  90 Percent confidence interval - upper         0.080
  P-value H_0: RMSEA <= 0.050                    0.026
  P-value H_0: RMSEA >= 0.080                    0.047
                                                      
  Robust RMSEA                                   0.066
  90 Percent confidence interval - lower         0.053
  90 Percent confidence interval - upper         0.080
  P-value H_0: Robust RMSEA <= 0.050             0.023
  P-value H_0: Robust RMSEA >= 0.080             0.055

Standardized Root Mean Square Residual:

  SRMR                                           0.030

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  WMC =~                                                                
    OSpan             1.000                               0.682    0.682
    SymSpan           1.142    0.070   16.321    0.000    0.779    0.780
    RotSpan           1.141    0.070   16.270    0.000    0.778    0.779
    RunSpatial        1.185    0.071   16.675    0.000    0.809    0.810
    RunDigit          0.963    0.068   14.104    0.000    0.657    0.656
  AC =~                                                                 
    Antisaccade       1.000                               0.698    0.699
    Flanker          -0.377    0.071   -5.336    0.000   -0.263   -0.264
    Stroop           -0.465    0.073   -6.417    0.000   -0.325   -0.325
  VA_ns =~                                                              
    VAorient_k        1.000                               0.999    1.000
  VA_s =~                                                               
    VAorient_S_k      1.000                               0.999    1.000

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  WMC ~~                                                                
    AC                0.399    0.039   10.167    0.000    0.838    0.838
    VA_ns             0.406    0.040   10.270    0.000    0.596    0.596
    VA_s              0.462    0.042   11.032    0.000    0.677    0.677
  AC ~~                                                                 
    VA_ns             0.388    0.044    8.818    0.000    0.556    0.556
    VA_s              0.486    0.047   10.441    0.000    0.696    0.696
  VA_ns ~~                                                              
    VA_s              0.575    0.048   11.903    0.000    0.577    0.577

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .OSpan            -0.006    0.042   -0.134    0.894   -0.006   -0.006
   .SymSpan          -0.001    0.042   -0.036    0.972   -0.001   -0.001
   .RotSpan           0.001    0.042    0.017    0.986    0.001    0.001
   .RunSpatial       -0.000    0.042   -0.009    0.993   -0.000   -0.000
   .RunDigit          0.006    0.042    0.142    0.887    0.006    0.006
   .Antisaccade      -0.001    0.042   -0.025    0.980   -0.001   -0.001
   .Flanker           0.002    0.042    0.053    0.958    0.002    0.002
   .Stroop            0.001    0.042    0.013    0.990    0.001    0.001
   .VAorient_k       -0.000    0.042   -0.000    1.000   -0.000   -0.000
   .VAorient_S_k     -0.000    0.042   -0.000    1.000   -0.000   -0.000

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .OSpan             0.536    0.036   14.906    0.000    0.536    0.535
   .SymSpan           0.390    0.029   13.261    0.000    0.390    0.391
   .RotSpan           0.393    0.030   13.295    0.000    0.393    0.394
   .RunSpatial        0.343    0.027   12.559    0.000    0.343    0.344
   .RunDigit          0.570    0.038   15.056    0.000    0.570    0.569
   .Antisaccade       0.511    0.067    7.674    0.000    0.511    0.512
   .Flanker           0.929    0.057   16.313    0.000    0.929    0.931
   .Stroop            0.893    0.055   16.178    0.000    0.893    0.894
   .VAorient_k        0.000                               0.000    0.000
   .VAorient_S_k      0.000                               0.000    0.000
    WMC               0.465    0.053    8.764    0.000    1.000    1.000
    AC                0.488    0.078    6.248    0.000    1.000    1.000
    VA_ns             0.998    0.059   16.852    0.000    1.000    1.000
    VA_s              0.998    0.059   16.852    0.000    1.000    1.000

Confirmatory factor analysis: Assess model output

lavaan::cfa()

 

residuals(fit, type = "cor")$cov
              OSpan SymSpn RotSpn RnSptl RunDgt Antscc Flankr Stroop VArnt_
OSpan         0.000                                                        
SymSpan       0.008  0.000                                                 
RotSpan       0.000  0.075  0.000                                          
RunSpatial   -0.022 -0.018 -0.029  0.000                                   
RunDigit      0.076 -0.074 -0.020  0.025  0.000                            
Antisaccade  -0.021 -0.011 -0.015  0.007  0.026  0.000                     
Flanker       0.040  0.024  0.006 -0.044 -0.004 -0.009  0.000              
Stroop       -0.117  0.029  0.032 -0.018 -0.054  0.009  0.010  0.000       
VAorient_k   -0.043 -0.002 -0.033  0.070 -0.037 -0.005 -0.040  0.011  0.000
VAorient_S_k -0.029 -0.017 -0.023  0.035  0.028  0.010  0.023  0.022  0.000
             VAr_S_
OSpan              
SymSpan            
RotSpan            
RunSpatial         
RunDigit           
Antisaccade        
Flanker            
Stroop             
VAorient_k         
VAorient_S_k  0.000

 

observed = model + residual

  • Model fit is assessed by how closely our model reproduces (or explains) the observed variance covariance matrix

  • You need to balance parsimony (a simpler model with fewer parameter estimates) and adequate model fit (a more complex model with theoretically irrelevant parameters)

Confirmatory factor analysis: Assess model output

lavaan::cfa()

 

summary(fit, fit.measures = TRUE, standardized = TRUE)
lavaan 0.6-19 ended normally after 34 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        34

  Number of observations                           568
  Number of missing patterns                        10

Model Test User Model:
                                                      
  Test statistic                               107.514
  Degrees of freedom                                31
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                              2163.395
  Degrees of freedom                                45
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.964
  Tucker-Lewis Index (TLI)                       0.948
                                                      
  Robust Comparative Fit Index (CFI)             0.964
  Robust Tucker-Lewis Index (TLI)                0.947

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)              -6986.895
  Loglikelihood unrestricted model (H1)      -6933.138
                                                      
  Akaike (AIC)                               14041.791
  Bayesian (BIC)                             14189.423
  Sample-size adjusted Bayesian (SABIC)      14081.489

Root Mean Square Error of Approximation:

  RMSEA                                          0.066
  90 Percent confidence interval - lower         0.053
  90 Percent confidence interval - upper         0.080
  P-value H_0: RMSEA <= 0.050                    0.026
  P-value H_0: RMSEA >= 0.080                    0.047
                                                      
  Robust RMSEA                                   0.066
  90 Percent confidence interval - lower         0.053
  90 Percent confidence interval - upper         0.080
  P-value H_0: Robust RMSEA <= 0.050             0.023
  P-value H_0: Robust RMSEA >= 0.080             0.055

Standardized Root Mean Square Residual:

  SRMR                                           0.030

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  WMC =~                                                                
    OSpan             1.000                               0.682    0.682
    SymSpan           1.142    0.070   16.321    0.000    0.779    0.780
    RotSpan           1.141    0.070   16.270    0.000    0.778    0.779
    RunSpatial        1.185    0.071   16.675    0.000    0.809    0.810
    RunDigit          0.963    0.068   14.104    0.000    0.657    0.656
  AC =~                                                                 
    Antisaccade       1.000                               0.698    0.699
    Flanker          -0.377    0.071   -5.336    0.000   -0.263   -0.264
    Stroop           -0.465    0.073   -6.417    0.000   -0.325   -0.325
  VA_ns =~                                                              
    VAorient_k        1.000                               0.999    1.000
  VA_s =~                                                               
    VAorient_S_k      1.000                               0.999    1.000

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  WMC ~~                                                                
    AC                0.399    0.039   10.167    0.000    0.838    0.838
    VA_ns             0.406    0.040   10.270    0.000    0.596    0.596
    VA_s              0.462    0.042   11.032    0.000    0.677    0.677
  AC ~~                                                                 
    VA_ns             0.388    0.044    8.818    0.000    0.556    0.556
    VA_s              0.486    0.047   10.441    0.000    0.696    0.696
  VA_ns ~~                                                              
    VA_s              0.575    0.048   11.903    0.000    0.577    0.577

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .OSpan            -0.006    0.042   -0.134    0.894   -0.006   -0.006
   .SymSpan          -0.001    0.042   -0.036    0.972   -0.001   -0.001
   .RotSpan           0.001    0.042    0.017    0.986    0.001    0.001
   .RunSpatial       -0.000    0.042   -0.009    0.993   -0.000   -0.000
   .RunDigit          0.006    0.042    0.142    0.887    0.006    0.006
   .Antisaccade      -0.001    0.042   -0.025    0.980   -0.001   -0.001
   .Flanker           0.002    0.042    0.053    0.958    0.002    0.002
   .Stroop            0.001    0.042    0.013    0.990    0.001    0.001
   .VAorient_k       -0.000    0.042   -0.000    1.000   -0.000   -0.000
   .VAorient_S_k     -0.000    0.042   -0.000    1.000   -0.000   -0.000

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .OSpan             0.536    0.036   14.906    0.000    0.536    0.535
   .SymSpan           0.390    0.029   13.261    0.000    0.390    0.391
   .RotSpan           0.393    0.030   13.295    0.000    0.393    0.394
   .RunSpatial        0.343    0.027   12.559    0.000    0.343    0.344
   .RunDigit          0.570    0.038   15.056    0.000    0.570    0.569
   .Antisaccade       0.511    0.067    7.674    0.000    0.511    0.512
   .Flanker           0.929    0.057   16.313    0.000    0.929    0.931
   .Stroop            0.893    0.055   16.178    0.000    0.893    0.894
   .VAorient_k        0.000                               0.000    0.000
   .VAorient_S_k      0.000                               0.000    0.000
    WMC               0.465    0.053    8.764    0.000    1.000    1.000
    AC                0.488    0.078    6.248    0.000    1.000    1.000
    VA_ns             0.998    0.059   16.852    0.000    1.000    1.000
    VA_s              0.998    0.059   16.852    0.000    1.000    1.000

 

  • Standardized loading can be found in Std.all column and should be:

    • Statistically significant, p < .05

    • Medium to large in size (standardized loading), > .30

    • Fairly balanced across the factor

Confirmatory factor analysis: Assess model output

lavaan::cfa()

 

summary(fit, fit.measures = TRUE, standardized = TRUE)
lavaan 0.6-19 ended normally after 34 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        34

  Number of observations                           568
  Number of missing patterns                        10

Model Test User Model:
                                                      
  Test statistic                               107.514
  Degrees of freedom                                31
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                              2163.395
  Degrees of freedom                                45
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.964
  Tucker-Lewis Index (TLI)                       0.948
                                                      
  Robust Comparative Fit Index (CFI)             0.964
  Robust Tucker-Lewis Index (TLI)                0.947

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)              -6986.895
  Loglikelihood unrestricted model (H1)      -6933.138
                                                      
  Akaike (AIC)                               14041.791
  Bayesian (BIC)                             14189.423
  Sample-size adjusted Bayesian (SABIC)      14081.489

Root Mean Square Error of Approximation:

  RMSEA                                          0.066
  90 Percent confidence interval - lower         0.053
  90 Percent confidence interval - upper         0.080
  P-value H_0: RMSEA <= 0.050                    0.026
  P-value H_0: RMSEA >= 0.080                    0.047
                                                      
  Robust RMSEA                                   0.066
  90 Percent confidence interval - lower         0.053
  90 Percent confidence interval - upper         0.080
  P-value H_0: Robust RMSEA <= 0.050             0.023
  P-value H_0: Robust RMSEA >= 0.080             0.055

Standardized Root Mean Square Residual:

  SRMR                                           0.030

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  WMC =~                                                                
    OSpan             1.000                               0.682    0.682
    SymSpan           1.142    0.070   16.321    0.000    0.779    0.780
    RotSpan           1.141    0.070   16.270    0.000    0.778    0.779
    RunSpatial        1.185    0.071   16.675    0.000    0.809    0.810
    RunDigit          0.963    0.068   14.104    0.000    0.657    0.656
  AC =~                                                                 
    Antisaccade       1.000                               0.698    0.699
    Flanker          -0.377    0.071   -5.336    0.000   -0.263   -0.264
    Stroop           -0.465    0.073   -6.417    0.000   -0.325   -0.325
  VA_ns =~                                                              
    VAorient_k        1.000                               0.999    1.000
  VA_s =~                                                               
    VAorient_S_k      1.000                               0.999    1.000

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  WMC ~~                                                                
    AC                0.399    0.039   10.167    0.000    0.838    0.838
    VA_ns             0.406    0.040   10.270    0.000    0.596    0.596
    VA_s              0.462    0.042   11.032    0.000    0.677    0.677
  AC ~~                                                                 
    VA_ns             0.388    0.044    8.818    0.000    0.556    0.556
    VA_s              0.486    0.047   10.441    0.000    0.696    0.696
  VA_ns ~~                                                              
    VA_s              0.575    0.048   11.903    0.000    0.577    0.577

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .OSpan            -0.006    0.042   -0.134    0.894   -0.006   -0.006
   .SymSpan          -0.001    0.042   -0.036    0.972   -0.001   -0.001
   .RotSpan           0.001    0.042    0.017    0.986    0.001    0.001
   .RunSpatial       -0.000    0.042   -0.009    0.993   -0.000   -0.000
   .RunDigit          0.006    0.042    0.142    0.887    0.006    0.006
   .Antisaccade      -0.001    0.042   -0.025    0.980   -0.001   -0.001
   .Flanker           0.002    0.042    0.053    0.958    0.002    0.002
   .Stroop            0.001    0.042    0.013    0.990    0.001    0.001
   .VAorient_k       -0.000    0.042   -0.000    1.000   -0.000   -0.000
   .VAorient_S_k     -0.000    0.042   -0.000    1.000   -0.000   -0.000

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .OSpan             0.536    0.036   14.906    0.000    0.536    0.535
   .SymSpan           0.390    0.029   13.261    0.000    0.390    0.391
   .RotSpan           0.393    0.030   13.295    0.000    0.393    0.394
   .RunSpatial        0.343    0.027   12.559    0.000    0.343    0.344
   .RunDigit          0.570    0.038   15.056    0.000    0.570    0.569
   .Antisaccade       0.511    0.067    7.674    0.000    0.511    0.512
   .Flanker           0.929    0.057   16.313    0.000    0.929    0.931
   .Stroop            0.893    0.055   16.178    0.000    0.893    0.894
   .VAorient_k        0.000                               0.000    0.000
   .VAorient_S_k      0.000                               0.000    0.000
    WMC               0.465    0.053    8.764    0.000    1.000    1.000
    AC                0.488    0.078    6.248    0.000    1.000    1.000
    VA_ns             0.998    0.059   16.852    0.000    1.000    1.000
    VA_s              0.998    0.059   16.852    0.000    1.000    1.000

 

  • Correlations between latent factors can be found in Covariances section
    • WMC and AC are correlated about the same with non-selective and selective visual arrays

Confirmatory factor analysis: Assess model output

lavaan::cfa()

 

  1. Alternatively, print model output with semoutput::sem_tables(fit)
sem_tables(fit)
Model Significance
N χ2 df p
568  107.514 31  <0.001
Model Fit
CFI RMSEA 90% CI TLI SRMR AIC BIC
0.964 0.066 0.053 — 0.080 0.948 0.030 14041.791 14189.423
Factor Loadings
Latent Factor Indicator
Standardized
Loading 95% CI sig SE z p
AC Antisaccade  0.699  0.606 — 0.792  *** 0.048 14.699     0.000
AC Flanker −0.264 −0.354 — −0.173 *** 0.046 −5.681 <0.001
AC Stroop −0.325 −0.412 — −0.238 *** 0.044 −7.339 <0.001
VA_ns VAorient_k  1.000  1.000 — 1.000 
0.000

VA_s VAorient_S_k  1.000  1.000 — 1.000 
0.000

WMC OSpan  0.682  0.632 — 0.732  *** 0.026 26.608     0.000
WMC RotSpan  0.779  0.739 — 0.818  *** 0.020 38.477     0.000
WMC RunDigit  0.656  0.603 — 0.710  *** 0.027 24.136     0.000
WMC RunSpatial  0.810  0.774 — 0.846  *** 0.018 44.163     0.000
WMC SymSpan  0.780  0.741 — 0.820  *** 0.020 38.781     0.000
* p < .05; ** p < .01; *** p < .001
Latent Factor Correlations
Factor Factor r 95% CI sig SE p
WMC AC 0.838 0.728 — 0.948 *** 0.056 0.000
WMC VA_ns 0.596 0.536 — 0.655 *** 0.030 0.000
WMC VA_s 0.677 0.626 — 0.728 *** 0.026 0.000
AC VA_ns 0.556 0.451 — 0.661 *** 0.054 0.000
AC VA_s 0.696 0.597 — 0.795 *** 0.051 0.000
VA_ns VA_s 0.577 0.522 — 0.631 *** 0.028 0.000
* p < .05; ** p < .01; *** p < .001
Latent Factor Variance/Residual Variance
Factor Variance Std. Variance sig p
WMC 0.465 1.000 ***     0.000
AC 0.488 1.000 *** <0.001
VA_ns 0.998 1.000 ***     0.000
VA_s 0.998 1.000 ***     0.000

From research question to structural model

Martin et al. (2021)

Data Set 3 (N = 568)

 

The purpose of this study was to evaluate the extent to which selective and non-selective visual arrays tasks reflect working memory storage and maintenance (WMC) vs. attention control processes (AC).

 

Non-Selective Visual Arrays: VAorient

Selective Visual Arrays: VAorient-S

From research question to structural model

Martin et al. (2021)

Data Set 3 (N = 568)

 

What is the unique contribution of working memory capacity and attention control to variability in non-selective and selective visual arrays?

 

Differences from a CFA:

  • Similar to correlation vs. multiple regression

  • Partitions unique sources of variance

  • Directional paths (⟹) instead of bi-directional paths (⟷)

  • Residual variance terms for dependent variables

What is the unique contribution of WMC and AC to variability in visual arrays tasks?

Structural equation model: Fit the model

 

 

 

model <- '
# latent factors
WMC =~ NA*OSpan + SymSpan + RotSpan + RunSpatial + RunDigit
AC =~ NA*Antisaccade + Flanker + Stroop

WMC ~~ 1*WMC
AC ~~ 1*AC

# single-indicator factors
VA_ns =~ 1*VAorient_k
VA_s =~ 1*VAorient_S_k

# regression paths
VA_ns ~ WMC + AC
VA_s ~ WMC + AC
'

fit <- sem(model, data, missing = "fiml", std.ov = TRUE)

It is recommended to set:

  • Exogenous (predictor) latent factor variances to 1
    • Set first factor loading to be freely estimated: NA*
    • Set latent factor variance to 1: WMC ~~ 1*WMC
  • Endogenous (dependent variable) latent factor variance to be freely estimated

What is the unique contribution of WMC and AC to variability in visual arrays tasks?

Structural equation model: Fit the model

 

 

 

model <- '
# latent factors
WMC =~ NA*OSpan + SymSpan + RotSpan + RunSpatial + RunDigit
AC =~ NA*Antisaccade + Flanker + Stroop

WMC ~~ 1*WMC
AC ~~ 1*AC

# single-indicator factors
VA_ns =~ 1*VAorient_k
VA_s =~ 1*VAorient_S_k

# regression paths
VA_ns ~ WMC + AC
VA_s ~ WMC + AC
'

fit <- sem(model, data, missing = "fiml", std.ov = TRUE)

Model syntax formula types

  • NA*   Freely estimate loading — default in sem() is to set first factor loading to 1
  • ~~     Set a variance or co-variance component
  • ~        Regression formula

What is the unique contribution of WMC and AC to variability in visual arrays tasks?

Structural equation model: Assess the model

 

 

 

 

 

 

summary(fit, fit.measures = TRUE, standardized = TRUE)
lavaan 0.6-19 ended normally after 61 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        34

  Number of observations                           568
  Number of missing patterns                        10

Model Test User Model:
                                                      
  Test statistic                               107.514
  Degrees of freedom                                31
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                              2163.395
  Degrees of freedom                                45
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.964
  Tucker-Lewis Index (TLI)                       0.948
                                                      
  Robust Comparative Fit Index (CFI)             0.964
  Robust Tucker-Lewis Index (TLI)                0.947

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)              -6986.895
  Loglikelihood unrestricted model (H1)      -6933.138
                                                      
  Akaike (AIC)                               14041.791
  Bayesian (BIC)                             14189.423
  Sample-size adjusted Bayesian (SABIC)      14081.489

Root Mean Square Error of Approximation:

  RMSEA                                          0.066
  90 Percent confidence interval - lower         0.053
  90 Percent confidence interval - upper         0.080
  P-value H_0: RMSEA <= 0.050                    0.026
  P-value H_0: RMSEA >= 0.080                    0.047
                                                      
  Robust RMSEA                                   0.066
  90 Percent confidence interval - lower         0.053
  90 Percent confidence interval - upper         0.080
  P-value H_0: Robust RMSEA <= 0.050             0.023
  P-value H_0: Robust RMSEA >= 0.080             0.055

Standardized Root Mean Square Residual:

  SRMR                                           0.030

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  WMC =~                                                                
    OSpan             0.682    0.039   17.527    0.000    0.682    0.682
    SymSpan           0.779    0.037   21.149    0.000    0.779    0.780
    RotSpan           0.778    0.037   21.059    0.000    0.778    0.779
    RunSpatial        0.809    0.036   22.365    0.000    0.809    0.810
    RunDigit          0.657    0.040   16.596    0.000    0.657    0.656
  AC =~                                                                 
    Antisaccade       0.698    0.056   12.495    0.000    0.698    0.699
    Flanker          -0.263    0.048   -5.460    0.000   -0.263   -0.264
    Stroop           -0.325    0.047   -6.897    0.000   -0.325   -0.325
  VA_ns =~                                                              
    VAorient_k        1.000                               0.999    1.000
  VA_s =~                                                               
    VAorient_S_k      1.000                               0.999    1.000

Regressions:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  VA_ns ~                                                               
    WMC               0.436    0.133    3.272    0.001    0.436    0.436
    AC                0.190    0.143    1.324    0.185    0.190    0.190
  VA_s ~                                                                
    WMC               0.315    0.167    1.891    0.059    0.315    0.315
    AC                0.431    0.173    2.500    0.012    0.432    0.432

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  WMC ~~                                                                
    AC                0.838    0.056   14.972    0.000    0.838    0.838
 .VA_ns ~~                                                              
   .VA_s              0.148    0.031    4.764    0.000    0.268    0.268

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .OSpan            -0.006    0.042   -0.134    0.894   -0.006   -0.006
   .SymSpan          -0.001    0.042   -0.036    0.972   -0.001   -0.001
   .RotSpan           0.001    0.042    0.017    0.986    0.001    0.001
   .RunSpatial       -0.000    0.042   -0.009    0.993   -0.000   -0.000
   .RunDigit          0.006    0.042    0.142    0.887    0.006    0.006
   .Antisaccade      -0.001    0.042   -0.025    0.980   -0.001   -0.001
   .Flanker           0.002    0.042    0.053    0.958    0.002    0.002
   .Stroop            0.001    0.042    0.013    0.990    0.001    0.001
   .VAorient_k        0.000    0.042    0.000    1.000    0.000    0.000
   .VAorient_S_k     -0.000    0.042   -0.000    1.000   -0.000   -0.000

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
    WMC               1.000                               1.000    1.000
    AC                1.000                               1.000    1.000
   .OSpan             0.536    0.036   14.906    0.000    0.536    0.535
   .SymSpan           0.390    0.029   13.261    0.000    0.390    0.391
   .RotSpan           0.393    0.030   13.295    0.000    0.393    0.394
   .RunSpatial        0.343    0.027   12.559    0.000    0.343    0.344
   .RunDigit          0.570    0.038   15.056    0.000    0.570    0.569
   .Antisaccade       0.511    0.067    7.674    0.000    0.511    0.512
   .Flanker           0.929    0.057   16.313    0.000    0.929    0.931
   .Stroop            0.893    0.055   16.178    0.000    0.893    0.894
   .VAorient_k        0.000                               0.000    0.000
   .VAorient_S_k      0.000                               0.000    0.000
   .VA_ns             0.633    0.041   15.295    0.000    0.635    0.635
   .VA_s              0.485    0.042   11.443    0.000    0.486    0.486

 

Path values can be found in the Regression section

What is the unique contribution of WMC and AC to variability in visual arrays tasks?

Structural equation model: Assess the model

 

 

 

 

 

 

sem_tables(fit)
Model Significance
N χ2 df p
568  107.514 31  <0.001
Model Fit
CFI RMSEA 90% CI TLI SRMR AIC BIC
0.964 0.066 0.053 — 0.080 0.948 0.030 14041.791 14189.423
Factor Loadings
Latent Factor Indicator
Standardized
Loading 95% CI sig SE z p
AC Antisaccade  0.699  0.606 — 0.792  *** 0.048 14.699     0.000
AC Flanker −0.264 −0.354 — −0.173 *** 0.046 −5.681 <0.001
AC Stroop −0.325 −0.412 — −0.238 *** 0.044 −7.339 <0.001
VA_ns VAorient_k  1.000  1.000 — 1.000 
0.000

VA_s VAorient_S_k  1.000  1.000 — 1.000 
0.000

WMC OSpan  0.682  0.632 — 0.732  *** 0.026 26.608     0.000
WMC RotSpan  0.779  0.739 — 0.818  *** 0.020 38.477     0.000
WMC RunDigit  0.656  0.603 — 0.710  *** 0.027 24.136     0.000
WMC RunSpatial  0.810  0.774 — 0.846  *** 0.018 44.163     0.000
WMC SymSpan  0.780  0.741 — 0.820  *** 0.020 38.781     0.000
* p < .05; ** p < .01; *** p < .001
Regression Paths
Predictor DV
Standardized
β 95% CI sig SE z p
AC VA_ns 0.190 −0.091 — 0.471 0.143 1.327     0.185
WMC VA_ns 0.436  0.178 — 0.695 *** 0.132 3.307 <0.001
AC VA_s 0.432  0.095 — 0.768 * 0.172 2.513     0.012
WMC VA_s 0.315 −0.011 — 0.641 0.166 1.897     0.058
* p < .05; ** p < .01; *** p < .001
Latent Factor Correlations
Factor Factor r 95% CI sig SE p
WMC AC 0.838 0.728 — 0.948 *** 0.056     0.000
VA_ns VA_s 0.268 0.175 — 0.361 *** 0.047 <0.001
* p < .05; ** p < .01; *** p < .001
Latent Factor Variance/Residual Variance
Factor Variance Std. Variance sig p
VA_ns 0.633 0.635 *** 0.000
VA_s 0.485 0.486 *** 0.000
Explained Variance
Variable R2
VA_ns 0.365
VA_s 0.514

Interpretation

 

The extent to which individual differences in visual arrays performance reflects attention control processes depends on the nature of the task

 

  1. Non-selective visual arrays reflects individual differences in working memory capacity, more so than attention control

  2. Selective visual arrays reflects individual differences in attention control, more so than working memory capacity

Your Turn!

1. Confirmatory Factor Analysis

 

Create latent factors

Factor1 =~ Task1 + Task2 + Task3

Factor2 =~ Task4 + Task5 + Task6

 

Create single-indicator factors

Factor3 =~ 1*Task7

 

Factors are correlated by default, but to manually specify

Factor1 ~~ Factor2

Factor1 ~~ Factor3

Factor2 ~~ Factor3

 

Fit the model

fit <- cfa(model, data, missing = "fiml", std.ov = TRUE)

Your Turn!

1. Confirmatory Factor Analysis

 

model <- '
# latent factors
WMC =~ OSpan + SymSpan + RotSpan + RunSpatial + RunDigit
AC =~ Antisaccade + Flanker + Stroop

# single-indicator factors
VA_ns =~ 1*VAorient_k
VA_s =~ 1*VAorient_S_k
'

fit <- cfa(model, data, missing = "fiml", std.ov = TRUE)

Your Turn!

1. Confirmatory Factor Analysis

 

Get output

summary(fit, fit.measures = TRUE, standardized = TRUE)

or

sem_tables(fit)

 

Evaluate model fit

Your Turn!

1. Confirmatory Factor Analysis

 

Get output

summary(fit, fit.measures = TRUE, standardized = TRUE)

or

sem_tables(fit)

 

Evaluate loadings

  • Statistically significant, p < .05

  • Medium to large in size (standardized loading), > .30

  • Fairly balanced across the factor

Evaluate factor correlations

Your Turn!

2. Structural equation model

 

Copy CFA model syntax

 

Set predictor factors variance to 1

Factor1 =~ NA*Task1 + Task2 + Task3

Factor1 ~~ 1*Factor1

 

Define regression paths

dv ~ Factor1 + Factor 2

 

Fit the model

fit <- sem(model, data, missing = "fiml", std.ov = TRUE)

 

Your Turn!

2. Structural equation model

 

model <- '
# latent factors
WMC =~ NA*OSpan + SymSpan + RotSpan + RunSpatial + RunDigit
AC =~ NA*Antisaccade + Flanker + Stroop

WMC ~~ 1*WMC
AC ~~ 1*AC

# single-indicator factors
VA_ns =~ 1*VAorient_k
VA_s =~ 1*VAorient_S_k

# regression paths
VA_ns ~ WMC + AC
VA_s ~ WMC + AC
'

fit <- sem(model, data, missing = "fiml", std.ov = TRUE)

 

Your Turn!

2. Structural equation model

 

Get output

summary(fit, fit.measures = TRUE, standardized = TRUE)

or

sem_tables(fit)

 

Evaluate model fit

Evaluate regression paths

Evaluate latent and residual factor correlations

 

Three common categories of structural equation models

 

[image]

Correlated predictor model

 

  • Standard multiple regression or hierarchical regression

  • Multiple predictor variables, One dependent variable

  • Type of research question:

    • Does variable x1 account for unique variance in variable y1, after accounting for variable x2?

    • What is the unique contribution of variables x1 and x2 to variance in variable y1?

Correlated predictor model

Martin et al. (2021)

Data Set 3 (N = 568)

 

The purpose of this study was to evaluate the extent to which selective and non-selective visual arrays tasks reflect working memory storage and maintenance vs. attention control processes.

 

Non-Selective Visual Arrays: VAorient

Selective Visual Arrays: VAorient-S

Correlated predictor model

Martin et al. (2021)

Data Set 3 (N = 568)

 

What is the unique contribution of working memory capacity and attention control to variability in non-selective and selective visual arrays?

[image]

 

Common cause model

 

  • One or more predictor variables, Two or more dependent variable

  • Type of research question:

    • Does variable x1 account for the correlation between variables y1 and y2?

    • Is variable x1 a common source of variance between variables y1 and y2?

Can attention control account for the correlation between working memory capacity and visual arrays?

Common cause model

 

Mediation model

 

  • One or more predictor variables, one or more mediators, and one or more dependent variables

  • Type of research question:

    • Does variable m1 mediate the correlation between variables x1 and y1?

    • Does variable m1 account for part of the correlation between variables x1 and y1?

  • Very similar to common cause model but can give you some additional information

    • A precise statistical test of whether the mediator partially explains the co-variance between two variables

    • Can make claims about full or just partial mediation

Does attention control mediate the relationship between working memory capacity and visual arrays?

Mediation model